package com.kjc.demo.rcservice.app;

import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;

import com.alibaba.fastjson.TypeReference;
import com.kjc.demo.rcservice.bean.FileStoreAreaBean;
import com.kjc.demo.rcservice.dto.FileStoreAreaDTO;
import com.kjc.demo.rcservice.dto.req.FileStoreAreaReqDTO;
import com.kjc.demo.rcservice.dto.res.FileStoreAreaResDTO;
import com.kjc.demo.rcservice.service.FileStoreAreaService;
import com.sdhs.paas.sdk.base.common.BasePage;
import com.sdhs.paas.sdk.base.common.entity.PaginationEntity;
import com.sdhs.paas.sdk.base.dto.PageInfoDTO;
import com.sdhs.paas.sdk.base.utils.EntityDtoConvertUtil;
import com.sdhs.paas.sdk.core.PaasBaseRequest;
import com.sdhs.paas.sdk.core.PaasBaseResponse;
import com.sdhs.paas.sdk.core.RefreshableRestController;

/**
 * @author FileStoreArea
 * @version 1.0
 * @Title:  代码生成接口，用于接受前端传输过来的数据
 * @author kangjichang
 * @date 2018-12-03
 */
 
@RefreshableRestController
@RequestMapping(value = "/fileStoreArea")
public class FileStoreAreaController {

    @Autowired
    private FileStoreAreaService fileStoreAreaService;
    
    /**
     * 分页查询接口
     * */
    @PostMapping("/getFileStoreAreaPageList")
	public PaasBaseResponse<FileStoreAreaResDTO> getFileStoreAreaPageList(@RequestBody PaasBaseRequest<FileStoreAreaReqDTO> fileStoreAreaReqDTO) {
    	FileStoreAreaDTO fileStoreAreaDTO = fileStoreAreaReqDTO.getBody().getFileStoreAreaDTO();
    	PageInfoDTO pageInfoDTO = fileStoreAreaReqDTO.getBody().getPageInfo();
    	
		BasePage pageRequest = new BasePage();
		pageRequest.setPage(pageInfoDTO.getPage());
		pageRequest.setCount(pageInfoDTO.getPageSize());
		
		FileStoreAreaBean fileStoreAreaBean = EntityDtoConvertUtil.convertToEntity(fileStoreAreaDTO, FileStoreAreaBean.class);
		PaginationEntity<FileStoreAreaBean> page = fileStoreAreaService.getPageFileStoreAreaList(pageRequest, fileStoreAreaBean);
    	PageInfoDTO resPageInfoDTO = new PageInfoDTO();
    	FileStoreAreaResDTO fileStoreAreaResDTO = new FileStoreAreaResDTO();
		resPageInfoDTO.setRowCount(page.getTotal());
		fileStoreAreaResDTO.setPageInfo(resPageInfoDTO);
		List<FileStoreAreaBean> fileStoreAreaBeanList = page.getRows();
		List<FileStoreAreaDTO> dtoList = new ArrayList<FileStoreAreaDTO>();
		dtoList = EntityDtoConvertUtil.convertToDTOList(fileStoreAreaBeanList, new TypeReference<List<FileStoreAreaDTO>>() {
		});
		fileStoreAreaResDTO.setFileStoreAreaDTOList(dtoList);
    	return new PaasBaseResponse<>(fileStoreAreaResDTO);
	}
	
	/**
	 * 保存接口
	 * */
	@PostMapping("/saveFileStoreArea")
	public PaasBaseResponse<FileStoreAreaResDTO> saveFileStoreArea(@RequestBody PaasBaseRequest<FileStoreAreaReqDTO> fileStoreAreaReqDTO) {
		FileStoreAreaDTO fileStoreAreaDTO = fileStoreAreaReqDTO.getBody().getFileStoreAreaDTO();
		FileStoreAreaBean fileStoreAreaBean = EntityDtoConvertUtil.convertToEntity(fileStoreAreaDTO, FileStoreAreaBean.class);
		String uuid = UUID.randomUUID().toString().trim().replaceAll("-", "");
		Boolean flag = fileStoreAreaService.saveFileStoreArea(fileStoreAreaBean);
		fileStoreAreaDTO.setId(uuid);
		FileStoreAreaResDTO fileStoreAreaResDTO = new FileStoreAreaResDTO();
		fileStoreAreaResDTO.setFileStoreAreaDTO(fileStoreAreaDTO);
		return new PaasBaseResponse<>(fileStoreAreaResDTO);
	}
	
	/**
	 * 修改接口
	 * */
	@PostMapping("/updateFileStoreArea")
	public PaasBaseResponse<FileStoreAreaResDTO> updateFileStoreArea(@RequestBody PaasBaseRequest<FileStoreAreaReqDTO> fileStoreAreaReqDTO) {
		FileStoreAreaDTO fileStoreAreaDTO = fileStoreAreaReqDTO.getBody().getFileStoreAreaDTO();
		FileStoreAreaBean fileStoreAreaBean = EntityDtoConvertUtil.convertToEntity(fileStoreAreaDTO, FileStoreAreaBean.class);
		Boolean flag = fileStoreAreaService.updateFileStoreArea(fileStoreAreaBean);
		FileStoreAreaResDTO fileStoreAreaResDTO = new FileStoreAreaResDTO();
		fileStoreAreaResDTO.setFileStoreAreaDTO(fileStoreAreaDTO);
		return new PaasBaseResponse<>(fileStoreAreaResDTO);
	}
	
	/**
	 * 获取详情接口
	 * */
	@PostMapping("/getFileStoreAreaDetail")
	public PaasBaseResponse<FileStoreAreaResDTO> getFileStoreAreaDetail(@RequestBody PaasBaseRequest<FileStoreAreaReqDTO> fileStoreAreaReqDTO) {
		FileStoreAreaDTO fileStoreAreaDTO = fileStoreAreaReqDTO.getBody().getFileStoreAreaDTO();
		FileStoreAreaBean fileStoreAreaBean = EntityDtoConvertUtil.convertToEntity(fileStoreAreaDTO, FileStoreAreaBean.class);
		fileStoreAreaBean = fileStoreAreaService.getFileStoreAreaDetail(fileStoreAreaBean.getId());
		FileStoreAreaResDTO fileStoreAreaResDTO = new FileStoreAreaResDTO();
		fileStoreAreaResDTO.setFileStoreAreaDTO(fileStoreAreaDTO);
		return new PaasBaseResponse<>(fileStoreAreaResDTO);
	}
	
	/**
	 * 删除接口
	 * */
	@PostMapping("/deleteFileStoreArea")
	public PaasBaseResponse<FileStoreAreaResDTO> deleteFileStoreArea(@RequestBody PaasBaseRequest<FileStoreAreaReqDTO> fileStoreAreaReqDTO) {
		FileStoreAreaDTO fileStoreAreaDTO = fileStoreAreaReqDTO.getBody().getFileStoreAreaDTO();
		FileStoreAreaBean fileStoreAreaBean = EntityDtoConvertUtil.convertToEntity(fileStoreAreaDTO, FileStoreAreaBean.class);
		Boolean flag = fileStoreAreaService.deleteFileStoreArea(fileStoreAreaBean);
		FileStoreAreaResDTO fileStoreAreaResDTO = new FileStoreAreaResDTO();
		fileStoreAreaResDTO.setFileStoreAreaDTO(fileStoreAreaDTO);
		return new PaasBaseResponse<>(fileStoreAreaResDTO);
	}
}
